package com.wbs.resutil;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * @Author: 芝梦
 * @Description: 专用于登陆返回结果的工具类
 *               这个类是用于封装API响应的通用结果，包括状态码、消息和数据。
 *               这种封装通常用于API层来统一响应格式，因此更适合放在 api项目 中。
 *               @Accessors(chain = true)   访问(链式=true)
 *               Result.SUCCESS()   提供返回成功的方法
 *               Result.FAIL()      提供返回失败的方法
 *               Result.Result()    提供通用的方法
 * @DateTime: 2024/1/4 11:44
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class Result<T> {
    private String code;
    private String msg;
    private T data;

    public Result(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    //提供返回成功的方法
    public static Result SUCCESS(){
        return new Result(ResultEnums.Operation_Success.getCode(), ResultEnums.Operation_Success.getMsg());
    }

    //提供返回失败的方法
    public static Result FAIL(){
        return new Result(ResultEnums.Operation_Fail.getCode(), ResultEnums.Operation_Fail.getMsg());
    }

    //提供通用的方法
    public static Result RESPONSE(ResultEnums resultEnums){
        return new Result(resultEnums.getCode(),resultEnums.getMsg());
    }
}
